Microsoft® Windows® 2000 is a commercial operating system for use in computers with 133 MHz or higher Pentium-compatible processors, particularly in a networked environment (Microsoft and Windows are trademarks of Microsoft Corp., Redmond, Wash.). Additional information about Windows® 2000 is available from the Microsoft® web site at <http://www.microsoft.com>.
FIG. 1 shows a block diagram of a standard version of a Windows® 2000 printing architecture 10 for a universal print driver and a postscript print driver. The Windows® 2000 operating system includes a graphics device interface (GDI) 15 library of services and functions to perform a host of drawing and graphic-related operations when applications require graphic support. The Windows® 2000 printing architecture 10 utilizes a number of GDI 15 functions and includes a print driver 20 and a print spooler 25. The print driver 20 is further comprised of one or more printer description files (i.e., one or more generic printer description (GPD) files for the universal print driver and one or more postscript printer description (PPD) files for the postscript print driver) 30, a user interface (UI) 35, and a renderer 40. The print spooler 25 is further comprised of a network print provider 45 and a local print provider 50. The local print provider 50 further includes a print provider 52, a process for determining if the print job is in enhanced metafile (EMF) format 55, an EMF print processor 60, a language monitor 65, one or more port monitors 70, and a port driver 75. A process for determining if the print job is in EMF format and selected for spooling 17 determines whether the print job is routed from GDI 15 to the print driver 20 or from GDI 15 to the print spooler 25.
The print driver 20 is installed on the computer along with the Windows® 2000 operating system. An operator may set up the print driver 20 to submit print jobs to a local print queue or to a remote print queue. The local print queue option is available for printers connected directly to a port on the local computer or printers connected directly to a network. If a print driver 20 is set up to print to a local print queue, the Windows® 2000 printing architecture 10 permits the local print queue to also be shared as a network resource. If a local print queue is shared, the local computer effectively becomes a print server for the shared printer. In regard to the print server, the remaining computers on the network are referred to as clients. The remote print queue option is available for print drivers 20 on any such client for any shared printer on the network. When a client user sends a print job to a remote print queue, the local print spooler 25 routes the print job to the network print provider 45. The network print provider 45 on the client transmits the print job to the local print provider 50 on the print server. Accordingly, the print spooler 25 may process print jobs from the local computer (print server) and print jobs from remote computers (clients), depending on the particular printing equipment available and the particular setup of the print drivers 20 on both the print server and the clients.
Regardless of the source of the print job, the local print provider 50 on the print server receives the print job for printing on its local printer. The print provider 52 schedules the print job, spools the print job, and provides job control and printer management capabilities. Next, a process determines if the print job is in EMF or RAW format 55. Print jobs in RAW format can be printed without further processing. A print job in EMF format includes graphics function calls and data and must be rendered in RAW format prior to printing. If the print job is in RAW format, it is sent to the language monitor 65 or the port monitor 70. However, if the print job is in EMF format it is sent to the EMF print processor 60 and routed to the GDI 15 and print driver 20 on the print server for rendering in RAW format.
Most applications initiate print jobs in EMF format because the print job is more compressed and permits a quicker return to the application. Such print jobs must be recycled by the print spooler 25 to the GDI 15 and print driver 20 for rendering in RAW format. Consequently, since most print jobs are in EMF format, most print jobs are recycled for rendering. Under the Windows® 2000 printing architecture 10, client work stations send print jobs to print servers in EMF format because EMF-formatted print jobs can be sent over the network more quickly than RAW-formatted print jobs. Consequently, print jobs sent by clients to the print server are spooled by the local print provider 52 and routed to the GDI 15 and print driver 20 on the print server to be rendered in RAW format. Again, once the print job is in RAW format it is routed to either the language monitor 65 or the port monitor 70. The port monitor 70 manages the configuration of the printer ports, translates the print job into the proper communication protocol for its destination printer port, and directs the print job to the appropriate port driver 75. The language monitor 65 is a type of port monitor 70 that also can add printer control information to the print job and provides a full duplex communication path between the print spooler 25 and a target device. The port driver 75 manages the communication to the printer via the printer port.
The print driver 20 and many components of the print spooler 25 (e.g., network print provider 45, language monitor 65, and port monitor 70) of the Windows® 2000 printing architecture 10 are designed to be replaceable and/or to interface with add-on plug-in modules to enable support to be added for new printers and for enhancements beyond the standard functionality provided along with the operating system. Support for a new printer usually only requires the creation of custom printer description files (i.e., GPD files for the universal print driver; PPD files for the postscript print driver) 30 for use with the print driver 20 supplied by Microsoft®. The behavior of the print driver 20 or print spooler 25 can also be customized by creating replacement software modules and/or plug-in modules to provide enhancements and advanced functionality.
However, several deficiencies have been identified in the Windows® 2000 printing architecture 10 that cannot be overcome by merely customizing the print driver 20 or print spooler 25 components or adding custom printer description files 30. One such problem is generally related to the networked environment. In the networked environment, if the UI 35 collects document-specific or device-specific print job attributes, such print job attributes are not provided to the renderer 40 on the print server when the EMF-formatted print job is rendered in RAW format. For example, the UI 35 may collect user-defined print job attributes from the client user at the time the print job is initiated (e.g., fax recipient list, print job accounting information, etc.), however, the information is not included in the EMF-formatted print job transmitted to the print server. As another example, the same problem occurs when the UI 35 automatically collects print job attributes (e.g., print job accounting information, etc.) at the time the print job is initiated. A second problem identified in the Windows® 2000 printing architecture 10 is related to sending a print job to multiple recipients (e.g., sending the print job as a fax via modem to multiple recipients). More specifically, neither the renderer 40 nor an associated plug-in module in any Windows® 2000 print driver 20 supports rendering a print job to multiple recipients.
Accordingly, there is a need to augment the Windows® 2000 printing architecture 10 with software modules that: 1) permit certain print job attributes either collected automatically or provided by a user at the time a print job is initiated on a client to be transmitted to the print server and accessed during rendering of the print job in RAW format on the print server and 2) permit print jobs to be sent to multiple recipients in both local print queues and remote print queues.